#include "tcp.h"

int main(int argc, char *argv[]){

	int sockfd, newsockfd;	        
	unsigned childpid;

	char mostrar[120];
	char *pname;
	int port;

	static char el_socket[15];
	pname = argv[0];

	if (argc > 1)
		port = atoi(argv[1]);
	else
		port = PORT_FIJO;

	if ( (sockfd = tcpoppas(port)) < 0){
	    perror("server: no se puede abrir el stream socket");
	    exit(1);
	}
 
	for ( ; ; ) {	/* no termina nunca */
	    newsockfd = aceptar(sockfd);
	    if (newsockfd < 0){
		perror ("server: error en el accept");
		exit(1); 
	    }
	    if ( (childpid = fork()) < 0){
		perror("server: error en el fork");
		exit(1);
	    }

	    else if (childpid == 0){
		close(sockfd);		/* cerrar socket original */
		sprintf (mostrar,"server: socket armado con un cliente  %d\n", newsockfd);
		write(fileno(stdout), mostrar, strlen(mostrar));  
		sprintf(el_socket, "%d\n",newsockfd); /* pasarle el socket al hijo que atiende */
		execlp("./tcpreceptor", "tcpreceptor", el_socket, (char *)0);
		perror("server: error al lanzar el receptor");
		exit(3);
	    }

	    close(newsockfd);  /* cerrar el socket pasado al hijo */
	}
}
